﻿using System;
using System.Threading;
using System.Windows.Forms;
using CentroVentas.Clases;
using CentroVentas.Clases.Utiles;
using CentroVentas.Funciones.Compras;
using CentroVentas.Clases.Funciones.Usuarios;


namespace CentroVentas
{
    public partial class FrmPrincipal : Form
    {
        public int IdUsuario = 0;
        public FrmPrincipal()
        {
            // SplashScreen
            Thread hilo = new Thread(new ThreadStart(SplashScreen));
            hilo.Start();
            Thread.Sleep(3000);
            InitializeComponent();
            hilo.Abort();
        }
        
        private void Principal_Load(object sender, EventArgs e)
        {
            this.Text = this.ProductName + " v" + this.ProductVersion;
            this.WindowState = FormWindowState.Maximized;

            // Comprobar la integridad de la BD.
            DataBase db = DataBase.GetInstance();
            int dbPrueba = db.comprobarIntegridad();

            if (dbPrueba == 0)
            {
                this.Principal_BD.Image = global::CentroVentas.Properties.Resources.IMG_RED;
                Principal_BD.Text = "ERROR EN LA CONFIGURACIÓN";
                Utilidades.mensaje(TipoMensaje.ERROR, "El archivo de configuración no se encuentra." + "\n Póngase en contacto con un administrador.", 1);
                Application.Exit();
            } 
            else if(dbPrueba == 2)
            {
                this.Principal_BD.Image = global::CentroVentas.Properties.Resources.IMG_RED;
                Principal_BD.Text = "ERROR EN LA BASE DE DATOS";
                Utilidades.mensaje(TipoMensaje.ERROR, "No se logro conectar a la BD." + "\n Póngase en contacto con un administrador.", 1);
                Application.Exit();
            }
            else if (dbPrueba == 1)
            {

                this.Principal_BD.Image = global::CentroVentas.Properties.Resources.IMG_GREEN;
                this.Principal_BD.Text = "CONECTADO!";
                this.Principal_Usuario.Text = "Login";
                Login();
            }

        }

        private void Login()
        {
            CentroVentas.Core.FrmLogin login = new Core.FrmLogin();
            Principal_Usuario.Text = "LOGIN";
            if (login.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                Usuarios usu = new Usuarios(login.usuario);
                IdUsuario = usu.Id;
                Principal_Usuario.Text = usu.Nombre;
                
                //if (Permisos.getPermiso(usu.Id, "FrmUsuarios"))
                //{
                //    MenuAdministracionUsuarios.Enabled = true;
                //    MenuAdministracionUsuariosAgregar.Enabled = Permisos.getPermiso(usu.Id, "FunUsuariosAgregar");
                //    MenuAdministracionUsuariosModificar.Enabled = Permisos.getPermiso(usu.Id, "FunUsuariosModificar");
                //    MenuAdministracionUsuariosAdministracionDePermisos.Enabled = Permisos.getPermiso(usu.Id, "FrmPermisos");
                //}
                //else
                //{
                //    MenuAdministracionUsuarios.Enabled = false;
                //}

                //if (Permisos.getPermiso(usu.Id, "FrmProveedores"))
                //{
                //    MenuProveedores.Enabled = true;
                //}
                //else
                //{
                //    MenuProveedores.Enabled = false;
                //}

                //if (Permisos.getPermiso(usu.Id, "FrmCompras"))
                //{
                //    MenuCompraVentasCompras.Enabled = true;
                //    MenuCompraVentasComprasAdministraciondeCompras.Enabled = true;
                //    MenuCompraVentasComprasNuevaCompra.Enabled = Permisos.getPermiso(usu.Id, "FunComprasCrear");
                //    MenuCompraVentasComprasConfirmarOrdenDeCompra.Enabled = Permisos.getPermiso(usu.Id, "FunComprasConfirmar");
                //}
                //else
                //{
                //    MenuCompraVentasCompras.Enabled = false;
                //}

                //if (Permisos.getPermiso(usu.Id, "FrmVentas"))
                //{
                //    MenuCompraVenta.Enabled = true;
                    
                //}
                //else
                //{
                //    MenuCompraVenta.Enabled = false;
                //}



            }
        }

        #region SPLASHSCREEN ------------------------------------------------------
        private void SplashScreen()
            {
                Application.Run(new Clases.SplashScreen());
            }
        #endregion

        private void Barra_Salir_Click(object sender, EventArgs e)
        {
            if (MessageBox.Show("¿Está seguro de que desea salir?", ProductName, MessageBoxButtons.YesNo, MessageBoxIcon.Question) == System.Windows.Forms.DialogResult.Yes)
            {
                Application.Exit();
            }
        }

        private void MenuProveedoresAdministracionDeProveedores_Click(object sender, EventArgs e)
        {
            foreach (Form f in this.MdiChildren)
            {
                if (f.Name == "FrmProveedores")
                {
                    f.Activate();
                    break;
                }
            }
            CentroVentas.Funciones.Proveedores.FrmProveedores frm = new Funciones.Proveedores.FrmProveedores(IdUsuario);
            frm.MdiParent = this;
            frm.Show();
        }

        private void MenuAdministracionUsuariosAdministracionDePermisos_Click(object sender, EventArgs e)
        {
            foreach (Form f in this.MdiChildren)
            {
                if (f.Name == "FrmPermisos")
                {
                    f.Activate();
                    break;
                }
            }
            CentroVentas.Funciones.Administracion.FrmPermisos frm = new Funciones.Administracion.FrmPermisos();
            frm.MdiParent = this;
            frm.Show();
        }

        private void generarNuevaCompraToolStripMenuItem_Click(object sender, EventArgs e)
        {
            foreach (Form f in this.MdiChildren)
            {
                if (f.Name == "FunComprasCrear")
                {
                    f.Activate();
                    break;
                }
            }
            
            CentroVentas.Funciones.Compras.FunComprasCrear frm = new Funciones.Compras.FunComprasCrear(IdUsuario);
            frm.MdiParent = this;
            frm.Show();
        }

        private void toolStripButton1_Click(object sender, EventArgs e)
        {
            Funciones.Productos.FunProductosCrear fun = new Funciones.Productos.FunProductosCrear(false);
            fun.ShowDialog();
        }

        private void MenuCompraVentasComprasAdministraciondeCompras_Click(object sender, EventArgs e)
        {
            Funciones.Compras.FrmCompras frm = new Funciones.Compras.FrmCompras(IdUsuario);
            frm.Show();
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            Principal_Fecha.Text = DateTime.Now.ToShortDateString();
            Principal_Hora.Text = DateTime.Now.ToLongTimeString();
        }

        private void Principal_Botones_Desconectar_Click(object sender, EventArgs e)
        {
            try
            {
                for (int i = 0; i < this.MdiChildren.Length; i++)
                {
                    this.MdiChildren[i].Dispose();
                }
                Login();
            }
            catch (Exception)
            {
                Utilidades.mensaje(TipoMensaje.ERROR, "Hubo un problema",1000);
            }
            
        }

        private void Barra_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
        {

        }

        private void MenuComprasVentasVentasModuloVenta_Click(object sender, EventArgs e)
        {
            foreach (Form f in this.MdiChildren)
            {
                if (f.Name == "FunVentasCrear")
                {
                    f.Activate();
                    break;
                }
            }
            CentroVentas.Funciones.Ventas.FunVentasCrear frm = new Funciones.Ventas.FunVentasCrear(IdUsuario);
            frm.MdiParent = this;
            frm.Show();

        }

        private void toolStripButton1_Click_1(object sender, EventArgs e)
        {
            foreach (Form f in this.MdiChildren)
            {
                if (f.Name == "FunVentas")
                {
                    f.Activate();
                    break;
                }
            }
            CentroVentas.Funciones.Ventas.FrmVenta frm = new Funciones.Ventas.FrmVenta(IdUsuario);
            frm.MdiParent = this;
            frm.Show();
        }

        private void ventaToolStripMenuItem_Click(object sender, EventArgs e)
        {
            foreach (Form f in this.MdiChildren)
            {
                if (f.Name == "FunVentas")
                {
                    f.Activate();
                    break;
                }
            }
            CentroVentas.Funciones.Ventas.FrmVenta frm = new Funciones.Ventas.FrmVenta(IdUsuario);
            frm.MdiParent = this;
            frm.Show();
        }

        private void MenuCompraVentasComprasNuevaCompra_Click(object sender, EventArgs e)
        {
            foreach (Form f in this.MdiChildren)
            {
                if (f.Name == "FrmCompra")
                {
                    f.Activate();
                    break;
                }
            }
            CentroVentas.Funciones.Compras.FrmCompra frm = new Funciones.Compras.FrmCompra(IdUsuario);
            frm.MdiParent = this;
            frm.Show();
        }

        private void MenuAdministracionUsuariosAdministracionDeUsuarios_Click(object sender, EventArgs e)
        {
            foreach (Form f in this.MdiChildren)
            {
                if (f.Name == "FunUsuariosAgregar")
                {
                    f.Activate();
                    break;
                }
            }
            CentroVentas.Funciones.Usuarios.FunUsuariosAgregar frm = new Funciones.Usuarios.FunUsuariosAgregar();
            frm.MdiParent = this;
            frm.Show();
        }

        private void usuariosToolStripMenuItem_Click(object sender, EventArgs e)
        {
            foreach (Form f in this.MdiChildren)
            {
                if (f.Name == "FrmUsuarioModificar")
                {
                    f.Activate();
                    break;
                }
            }
            CentroVentas.Clases.Funciones.Usuarios.FrmUsuarioModificar frm = new CentroVentas.Clases.Funciones.Usuarios.FrmUsuarioModificar();
            frm.MdiParent = this;
            frm.Show();
            
        }

        private void MenuCompraVentasComprasConfirmarOrdenDeCompra_Click(object sender, EventArgs e)
        {
            foreach (Form f in this.MdiChildren)
            {
                if (f.Name == "FrmConfirmarOrdenDeCompra")
                {
                    f.Activate();
                    break;
                }
            }
            FrmConfirmarOrdenDeCompra frm = new FrmConfirmarOrdenDeCompra(IdUsuario);
            frm.MdiParent = this;
            frm.Show();
            frm.WindowState = FormWindowState.Maximized;
        }

        private void cerrarSesiónToolStripMenuItem_Click(object sender, EventArgs e)
        {
            try
            {
                for (int i = 0; i < this.MdiChildren.Length; i++)
                {
                    this.MdiChildren[i].Dispose();
                }
                Login();
            }
            catch (Exception)
            {
                Utilidades.mensaje(TipoMensaje.ERROR, "Hubo un problema", 1000);
            }
        }

        private void salirToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (MessageBox.Show("¿Está seguro de que desea salir?", ProductName, MessageBoxButtons.YesNo, MessageBoxIcon.Question) == System.Windows.Forms.DialogResult.Yes)
            {
                Application.Exit();
            }
        }

    }
}
